package initialize

import (
	"bufio"
	"os"
	"strings"

	"github.com/songzhibin97/gkit/cache/local_cache"

	"server/a0"
	"server/utils"
)

func OtherInit() {
	dr, err := utils.ParseDuration(a0.A_CONFIG.JWT.ExpiresTime)
	if err != nil {
		panic(err)
	}
	_, err = utils.ParseDuration(a0.A_CONFIG.JWT.BufferTime)
	if err != nil {
		panic(err)
	}
	// 在 JWT（JSON Web Token）的上下文中，这个默认过期时间通常与 JWT 的有效期一致，用于维护一个 “黑名单” 缓存，存储已被撤销或过期的令牌。
	// 例如，如果 JWT 的有效期是 24 小时，那么缓存项的默认过期时间也设为 24 小时，确保黑名单中的令牌在 JWT 失效后自动移除。
	//     为缓存实例设置默认的过期时间，确保所有未指定过期时间的缓存项在 dr 时间后自动失效，从而实现缓存数据的自动清理和更新。
	// 在 JWT 黑名单的场景中，这有助于保持黑名单与令牌有效期的同步，避免存储过期的无效数据。
	a0.BlackCache = local_cache.NewCache(
		local_cache.SetDefaultExpire(dr),
	)
	file, err := os.Open("go.mod")
	if err == nil && a0.A_CONFIG.AutoCode.Module == "" {
		scanner := bufio.NewScanner(file)
		scanner.Scan()
		a0.A_CONFIG.AutoCode.Module = strings.TrimPrefix(scanner.Text(), "module ")
	}
}
